home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / net / drexxmail.lha / demon.rexx < prev    next >
OS/2 REXX Batch file  |  1994-10-03  |  3KB  |  110 lines

  1. /* demon.rexx - Mail Daemon for DREXXMAIL release 3  */
  2.  
  3. /* v1.00 9-30-94                                     */
  4. /* v1.02 10-1-94 Fixed bug that would delete all your*/
  5. /*               UNIX mail if your local mailbox was */
  6. /*               empty!                              */
  7. /* v2.00 10-3-94 Added some GUI stuff                */
  8.  
  9. /* This script acts as a mail daemon for DREXXMAIL.  */
  10. /* Based loosely on Joe Rumsey's "maildaemon.sh"     */
  11. /* for Amiga CSH.  This version is configurable      */
  12. /* (and killable) thru environment vairables.        */
  13.  
  14. options results
  15. call addlib("rexxreqtools.library",0,-30,0)
  16.  
  17. /* Some initializations... */
  18.  
  19. lf = '0a'x
  20. cr = '0d'x
  21. colon='3a'x
  22. semicol='3b'x
  23. qmark='22'x
  24. fonttag=""
  25. address command
  26.  
  27. /* The meat ... */
  28.  
  29. call open dlog,"t:debuglog",write
  30.  
  31. /* dmode - 1=requester mode , 2=timer mode, 0=abort ... default 1 */
  32.  
  33. dmode = envar('DRMDEMONMODE')
  34. if dmode = "" then dmode = 1 
  35.  
  36. do until envar('DRMABORT') ~=""
  37.      remotefile = envar('DRMUNIXDIR')||envar('USERNAME')
  38.      localfile = envar('DRMLOCALDIR')||envar('USERNAME')
  39.      tempfile = "t:"||envar('USERNAME')
  40.      lockfile = tempfile||".LOCK"
  41.      msg = "Select an option ..."
  42.      if (dmode=1) then dmode = rtezrequest(msg,"_Check mail now|_Timer Mode|_Quit DEMON"," DRexxMail DEMON",fonttag)
  43.      if (dmode=0) then call putvar 'DRMABORT',1
  44.      if (exists(lockfile)=0)&(dmode~=0) then do
  45.           'echo >'lockfile
  46.           call open lck,lockfile,write
  47.           'dnet:getfiles -dT:' remotefile
  48.       call writeln dlog,'dnet:getfiles -dT:' remotefile 
  49.  
  50.           flen = 0
  51.           mlen = 0
  52.           if exists(tempfile) then do
  53.                call open clof,tempfile,read
  54.                flen = seek(clof,0,'E')
  55.                call close clof
  56.                end
  57.           if exists(localfile) then do
  58.                call open mlof,localfile,read
  59.                mlen = seek(mlof,0,'E')
  60.                call close mlof
  61.                end
  62.  
  63.           if flen > 1 then do
  64.                if ~exists(localfile) then 'echo >'localfile
  65.                'copy 'localfile' t:demon.bak QUIET'
  66.                'copy 'tempfile' TO 'localfile
  67.                if mlen > 1 then 'join t:demon.bak 'tempfile' AS 'localfile
  68.                'echo >'tempfile
  69.                call writeln dlog,'dnet:putfiles -d'envar('DRMUNIXDIR') tempfile
  70.                call writeln dlog,'echo >'tempfile
  71.                'dnet:putfiles -d'envar('DRMUNIXDIR') tempfile
  72.                call open ecommand, "T:demon.cmd",write
  73.                call writeln ecommand, 'run <NIL: >NIL: 'envar(DRMNOTIFY)
  74.                call close ecommand
  75.                'execute' "T:demon.cmd"
  76.                end
  77.           call close lck
  78.           'delete 'lockfile' QUIET'
  79.           end
  80.      delaytime = envar('DRMDELAY')
  81.      if delaytime = "" then delaytime = 15
  82.      if (dmode=2) then do
  83.          'wait 'delaytime' MIN'
  84.          end
  85.      end
  86. call close dlog
  87. 'unsetenv DRMABORT'
  88. msg = "DRexxMail Demon v2.00"||lf||"By Rick Taylor (charlet@eng.clemson.edu)"||lf||"Ended..."
  89. dummy = rtezrequest(msg,"_Ok"," DRexxMail DEMON",fonttag)
  90. exit
  91.  
  92. envar: procedure
  93.      arg evname
  94.      epath = "ENV:"||evname
  95.      evalue = ""
  96.      if exists(epath) then do
  97.           call open .envar,epath,read
  98.           evalue = readln(.envar)
  99.           call close .envar
  100.           end
  101.      return evalue
  102.  
  103. putvar: procedure
  104.      arg evname,evalue
  105.      epath = "ENV:"||evname
  106.      call open .envar,epath,write
  107.      call writeln .envar,evalue
  108.      call close .envar
  109.      return 1
  110.